Next: Named Features, Previous: Autoload, Up: Loading [Contents][Index]
You can load a given file more than once in an Emacs session. For example, after you have rewritten and reinstalled a function definition by editing it in a buffer, you may wish to return to the original version; you can do this by reloading the file it came from.
When you load or reload files, bear in mind that the
load and load-library functions
automatically load a byte-compiled file rather than a
non-compiled file of similar name. If you rewrite a file that you
intend to save and reinstall, you need to byte-compile the new
version; otherwise Emacs will load the older, byte-compiled file
instead of your newer, non-compiled file! If that happens, the
message displayed when loading the file includes,
‘(compiled; note, source is newer)’, to
remind you to recompile it.
When writing the forms in a Lisp library file, keep in mind
that the file might be loaded more than once. For example, think
about whether each variable should be reinitialized when you
reload the library; defvar does not change the value
if the variable is already initialized. (See Defining
Variables.)
The simplest way to add an element to an alist is like this:
(push '(leif-mode " Leif") minor-mode-alist)
But this would add multiple elements if the library is
reloaded. To avoid the problem, use add-to-list (see
List
Variables):
(add-to-list 'minor-mode-alist '(leif-mode " Leif"))
Occasionally you will want to test explicitly whether a
library has already been loaded. If the library uses
provide to provide a named feature, you can use
featurep earlier in the file to test whether the
provide call has been executed before (see Named Features).
Alternatively, you could use something like this:
(defvar foo-was-loaded nil) (unless foo-was-loaded execute-first-time-only (setq foo-was-loaded t))
Next: Named Features, Previous: Autoload, Up: Loading [Contents][Index]